<?php
/**
* @package Joostina
* @copyright Авторские права (C) 2008-2010 Joostina team. Все права защищены.
* @license Лицензия http://www.gnu.org/licenses/gpl-2.0.htm GNU/GPL, или help/license.php
* Joostina! - свободное программное обеспечение распространяемое по условиям лицензии GNU/GPL
* Для получения информации о используемых расширениях и замечаний об авторском праве, смотрите файл help/copyright.php.
*/

// запрет прямого доступа
defined('_VALID_MOS') or die();
/* vim: set expandtab tabstop=4 shiftwidth=4:*/
// +----------------------------------------------------------------------+
// | PHP version 4                                                        |
// +----------------------------------------------------------------------+
// | Copyrieht (c) 1997-2002 The PHP Group                                |
// +----------------------------------------------------------------------+
// | This source file is subject to version 3.0 of the PHP license,       |
// | that is bundled with this package in the file LICENSE, and is        |
// | available at through the world-wide-web at                           |
// | http://www.php.net/license/3_0.txt.                                  |
// | If you did not receive a copy of the PHP license and are unable to   |
// | obtain it through the world-wide-web, please send a note to          |
// | license@php.net so we can mail you a copy immediately.               |
// +----------------------------------------------------------------------+
// | Authors: Ian Eure <ieure@php.net>                                    |
// +----------------------------------------------------------------------+
//
// $Id:Parameter.php 13 2007-05-13 07:10:43Z soeren $

/**
* Class for working with MIME type parameters
*
* @version @version@
* @package @package@
* @author Ian Eure <ieure@php.net>
*/
class MIME_Type_Parameter {
	/**
	* Parameter name
	*
	* @var string
	*/
	var $name;

	/**
	* Parameter value
	*
	* @var string
	*/
	var $value;

	/**
	* Parameter comment
	*
	* @var string
	*/
	var $comment;


	/**
	* Constructor.
	*
	* @param  string $param MIME parameter to parse, if set.
	* @return void
	*/
	function MIME_Type_Parameter($param = false) {
		if($param) {
			$this->parse($param);
		}
	}


	/**
	* Parse a MIME type parameter and set object fields
	*
	* @param  string $param MIME type parameter to parse
	* @return void
	*/
	function parse($param) {
		$this->name = $this->getAttribute($param);
		$this->value = $this->getValue($param);
		if($this->hasComment($param)) {
			$this->comment = $this->getComment($param);
		}
	}


	/**
	* Get a parameter attribute (e.g. name)
	*
	* @param  string MIME type parameter
	* @return string Attribute name
	* @static
	*/
	function getAttribute($param) {
		$tmp = explode('=',$param);
		return trim($tmp[0]);
	}


	/**
	* Get a parameter value
	*
	* @param  string $param MIME type parameter
	* @return string Value
	* @static
	*/
	function getValue($param) {
		$tmp = explode('=',$param);
		$value = $tmp[1];
		if(MIME_Type_Parameter::hasComment($param)) {
			$cs = strpos($value,'(');
			$value = substr($value,0,$cs);
		}
		return trim($value,'" ');
	}


	/**
	* Get a parameter comment
	*
	* @param  string $param MIME type parameter
	* @return string Parameter comment
	* @see getComment()
	* @static
	*/
	function getComment($param) {
		$cs = strpos($param,'(');
		$comment = substr($param,$cs);
		return trim($comment,'() ');
	}


	/**
	* Does this parameter have a comment?
	*
	* @param  string  $param MIME type parameter
	* @return boolean true if $param has a comment, false otherwise
	* @static
	*/
	function hasComment($param) {
		if(strstr($param,'(')) {
			return true;
		}
		return false;
	}


	/**
	* Get a string representation of this parameter
	*
	* This function performs the oppsite of parse()
	*
	* @return string String representation of parameter
	*/
	function get() {
		$val = $this->name.'="'.$this->value.'"';
		if($this->comment) {
			$val .= ' ('.$this->comment.')';
		}
		return $val;
	}
}
?>
